package com.yun2.bms.model;

import javafx.beans.DefaultProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;

/**
 * author: youli
 * qq: 27855162@qq.com
 * date: 2020/5/25
 * 图书分类实体类：暂时不是用@Data注解，因为我们开发的过程中，要使用基于javafx的双向数据绑定
 * 双向数据绑定会在实体类中添加新的属性，lombok的@Data注解不能自动添加与数据绑定相关的方法，所以暂时放弃使用。
 */
public class Category {
    //对应于数据库中category表的id字段
    private final SimpleIntegerProperty id = new SimpleIntegerProperty();
    //对应于数据库中category表的category_name字段
    private final SimpleStringProperty categoryName = new SimpleStringProperty("");

    public Category() {
    }

    public Category(String categoryName) {
        setCategoryName(categoryName);
    }

    public Category(Integer id, String categoryName) {
        setId(id);
        setCategoryName(categoryName);
    }

    public int getId() {
        return id.get();
    }

    public SimpleIntegerProperty idProperty() {
        return id;
    }

    public void setId(int id) {
        this.id.set(id);
    }

    public String getCategoryName() {
        return categoryName.get();
    }

    public SimpleStringProperty categoryNameProperty() {
        return categoryName;
    }

    public void setCategoryName(String categoryName) {
        this.categoryName.set(categoryName);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Category category = (Category) o;

        return id != null ? id.equals(category.id) : category.id == null;
    }

    @Override
    public int hashCode() {
        return id != null ? id.hashCode() : 0;
    }
}
